home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC Media 6
/
PC MEDIA CD06.iso
/
share
/
prog
/
ckit254
/
history
< prev
next >
Wrap
Text File
|
1995-01-01
|
31KB
|
720 lines
RELEASE HISTORY
v.2.54
12/01/92
- Fix problem with higher IRQ's. CKIT has been tested and
will work with interrupts 0-15 and any port address.
The irq should be entered in decimal. (the port is in hex).
i.e. PORT:03E8:12 tells CKIT to use port 03E8 interrupt 12.
- Cleaned some up code with optimization.
v.2.52
10/22/92
- Changed _ck_gen_msgs and ck_logoff_msgs so that they use
standard output instead of BIOS. This will allow use of
ANSI controls in message strings to change colors, cursor
control etc.
- Fixed a bug in the ck_get_cmdline() routine.
09-25-92 v2.50
- Added Support for Digiboard Universal driver for Digiboards.
Use same as the Fossil command to open_door.
Instead of F in the port command, use a D. (for Digiboard)
PORT:D:x - x equal channel number.
- Added Support for highter interrupts (8-15).
- Updated CKIT.H to make it more compatible with C++ compilers and
added/corrected a few ckit variables that were missing.
04/25/92
- Changed CKIT to use less near heap space.
There is now approx. 4.3K more near data
space in the small and medium models and
2.2K more near data space in the large
memory model.
04/22/92
- Fixed CKIT to handle node numbers greater than 99 with door.sys
- Fixed CKIT to be compatible with PCB14.5A /X version for node
numbers when using pcboard.sys.
04/12/92
- Added ck_NO_STATUS. When TRUE, tells CKIT not to create
a status line. Must be set to desired state before
open_door() is called. Once open_door() is called,
it cannot be changed.
- Optimized some code in the large model's ck_input() and
corrected a bug at the same time. At times, ck_input
was skipping a character in the input bufer.
Corrected.
12-15-91 v2.10
- Changed the way CKIT was handling the speaker beep
on keyboard timeout beeps.
- Added ck_NOSYSTEM. When TRUE, tells CKIT open_door() not
not to expect a filename but a pointer to a structure
for it's information. The structure is typed in ckit.h as
typedef struct ckitgeneric {
char port[6]; /* COM:X COM0: equals local */
short min_left; /* minutes left */
};
This will allow your door program to read any BBS system file
and pass the information CKIT needs thru the structure.
open_door() will still accept the port:AAAA:X.
If you don't need this, then no changes are necassary in your source
code. However, if you would like make your door compatible with a
BBS system that CKIT does not support (such as WWIV), then you
can read the WWIV file, fill in the appropriate CKIT variables
(ck_fullname, ck_ckit, etc) and the ckitgeneric structure with
the port and minutes left. Then set CK_NOSYSTEM = TRUE, and call
open_door(). You should fill in ck_fullname, ck_baud etc before
you call open_door() so that the status line will contain the
proper information. If you don't, it won't hurt anything and
CKIT will pick it anyway the next time it updates the status line.
(either after one minute or by typing ALT-H to scroll thru).
Be careful you pay attention to the size of the CKIT arrays that
you will be filling in and you don't exceed them. For instance,
ck_fullname is declared as ck_fullname[26] (including null).
Check the docs for the size/types of the variables.
- Added ck_NO_FKEYS. When TRUE it will disable the local
sysop keyboard F-keys and ALT keys except for ALT-H.
Default is FALSE. (F-keys enabled)
- Change set_kybd_time() so that each call to it zeros the
present keyboard timer time
- A big one here. I think I finally tracked down the cause
of CKIT suddenly hanging at times up while transmitting
for no reason while it was apprently waiting on CTS when
CTS was OK. I finally managed to duplicate it repeatly and
found the cause.
- Fix a bug were a if you specified USERSFILE=TRUE and there
was an error opening the users file, it trashed a register
internally that shouldn't have gotten trashed. Under normal
conditions it would not have affected anything. (if the users
file was opened OK).
- If Ckit finds a generic.sys file in use, it will no longer ask
for the person's first and last name. You will have to add this
to your program to do so. i.e.
if(GENERIC) {
newline();
s_puts("Please enter first and last name (MAX 25) ->");
get_cmdline_raw(45);
strncpy(fullname, cmdline, 25);
}
- New variable added called short ck_silent. This variable when TRUE
will prevent keyboard timeout beeps from being sent to the local
console. It can be set/reset manual thru your program and it will
also following the setting of F7 for PCBoard systems. (caller alarm toggle).
- Fixed some ANSI strings in the library so that it will no longer
attempt to set background color to black. This should make things
a little easier for people using background colors other than black
and will allow you to only change the foreground colors (leaving the
background alone) when using ck_color();.
- Ckit was not always picking the node number up correctly from
DORINFOx.DEF files. (x being the node number). Fixed.
09-25-91 v2.08
- Changed ck_DOTS operation.
Setting ck_DOTS = char will cause char to be echoed to the
remote/local console. ck_DOTS = NULL cancels.
- ck_system_time_used() was prototyped incorrectly in ckit.h
as ck_system_time_left(). Fixed.
- Some variables in ckit.h did not have the "ck_" prefixed
to the variable name. Fixed.
- Added support to MBBS systems. (PCBoard clone found in largely Europe).
- Changed ck_set_ANSI() to accept TRUE/FALSE (short) depending
whether or not the user wanted to turn ANSI compability ON or OFF.
The previous ck_set_ANSI() toggled this setting. The prototype
for ck_set_ANSI is now - short ck_set_ANSI(short) where the short
is either TRUE/FALSE. (1 or 0). It returns whatever you pass it.
Why is this routine necassary? When C-kit first opens a system file
it determines from the file whether the wanted the user wants
ANSI control, (ansi_NG will be set, GRAPHICS FALSE) OR if they wanted
ANSI control with graphics (ansi_NG false, GRAPHICS TRUE). To save
code size and execution time in the internal library rountines
(such as ck_pos_cursor etc) , there is only one internal variable
that C-kit checks to see if ANSI was desired. This routine only becomes
necassary when a user of your door is using generic.sys. The
generic.sys has no way of knowing whether the user wanted ANSI or
has ANSI selected. If the door program detects that a generic.sys
file is being used, it should then stop and ask if the user desires
ANSI control and if the user wants ANSI control with color.
set ansi_ng TRUE, graphics FALSE and ck_set_ANSI(TRUE) (ansi w/o color)
set ansi_ng FALSE, graphics TRUE and ck_set_ANSI(TRUE) (ansi w/color)
set ansi_ng FALSE, graphics FALSE and ck_set_ANSI(FALSE) (no ansi)
Notice that ck_set_ANSI() is the logical OR'ing of the other two
variables (ansi_ng and graphics) which is what C-kit does at the
begining of a door. That way instead of doing this each time
routines such as ck_pos_cursor() etc.. is called it only has to
check one variable making the code smaller and faster.
- Changed ck_dos_shell() to use the spawnlp() funtion in C.
The syntax for ck_dos_shell() has changed. It is now
prototyped as ck_dos_shell(char *, char *); where
the 1st string pointer is the program to execute and
the 2nd string pointer is the command line arguments
to be passed to the program. Example taken from
CKITDEMO.C. It should return an error level correctly
now reguardless of which compiler you are using.
The max. DOS limit for the length of cmd line arguments
is 128 chars so the 2nd string pointer should not exceed this.
void filexfer(void) {
sprintf(zmodem_cmds, "portx %X,%X pB4096 pa3000 handshake cts sz %s", \
uart_base, irq, doc_filename);
if(dos_shell("dsz", zmodem_cmds)) {
s_puts("\n\aTransfer aborted");
} else {
s_puts("\nTransfer complete");
}
- There was a minor change in the ckit.h file under the
users structure. Added user.packed_byte after user.protocol.
This location had not been used in previos PCBoard releases.
Changed ck_user.last_read to ck_user.last_read[39] in
user file structure.
- Yes, Gary, you no longer have to use word alignment when using
the user structure or ck_update_user() function!. This means
also that Microsoft C users will need to add the Zp1 switch
on the command line. Zp1 tells MSC to pack structures on
1 (BYTE) bounderies.
08-18-91 v2.0
- It is not necassary to use WORD alignment EXCEPT if you
plan on using the user structure or the update_user() function.
Otherwise, BYTE or WORD alignment should work OK.
- Added the short ck_system_time_used(void); function.
- ALL ckit's variables/functions now begin with the letters "ck_"
See upgrade file.
- Added ck_DOTS. This will cause dots "." to be echoed to
the screen when true and using one of the keyboard inputs.
- Fixed fullname so that it will display more than 2 names for
PCBboard 14.5.
- Ckit will no longer exit your program on it's own. If open_door()
fails, it will now return an error code based what the problem it
had. If open_door() is successful, it will return a NULL.
The error codes are as follows:
==========
1 ;Unable to open BBS system file (pcboard.sys,door.sys etc)
2 ;Problem reading BBS system file
3 ;Unrecognized BBS file type
4 ;Unable to open pcboard USERS file
5 ;Invalid User record or problem seeking to user record
6 ;Problem reading USER record
7 ;PORT command syntax error
8 ;Fossil driver specified but no Fossil driver installed
9 ;Memory allocation problem
- Added ability to change ALL of Ckit's exit message and they can be
of any length. The code looks for an array of pointers to the exit
messages and uses the option variable to pick which one to print.
This pointer to the array of pointer is now public so you can
define you own array of pointers to the 5 exit messages. They must
be in this order. See ck_logoff_msgs;
- display_file() will only print a "generic" message now.
"ERROR: Unable to open file!\a\r\n". If you want it to print
a specific file error message, the you need to change error_msg11.
This message is limited to 47 characters NOT including the NULL terminator.
strcpy(error_msg11, "\a\nUnable to locate CKIT.DOC");
if(display_file(doc_filename)) {
newline();
};
- Added set keyboard time out routine. This will allow the door author
to set keyboard timer. See set_kybd_time();
- The keyboard timer will not beep locally now if display has been turned
off. (display = FALSE).
- Added ability to change Ckit's general purpose messages.
See ck_gen_msgs;
- Added system_time_used(). This will report back the number of minutes
since the door was opened. It does include time used in previous calls.
You can use this function along with mins_left_system() to create
you prompt the same way display_time() does.
s_printf("( %d used, %d left)", system_time_used()+prev_used, \
mins_left_system()+time_credit);
- The global variable option will now be available BEFORE a call to
close_door() is made. If DUMP_USER goes TRUE, you can now check
option to see why it went TRUE BEFORE calling close_door().
- Fixed a problem in the large model libraries
with updating users record.
- Change syntax of ansi_NG to ansi_ng in MSC libraries.
- Fixed a problem with the port command that only occured
if port was passed as the 3rd argument
- Changed get_cmdline() to accept chars > than ASCII 128
- Added switch for ansi when using PCB14.5+ pcboard.sys file
to know if the caller wanted ANSI but no color.
- Ckit was not allowing ANSI cursor commands if the door.sys file
had the user set for ANSI with no graphics. (ansi_ng). Fixed.
- Added a new variable short non_ibm. This indicates whether the caller
called using 7 bits instead of 8 bits. Using 7 bits doesn't allow
for IBM graphic characters above 128 to be displayed correctly.
- Added time_credit, and mins_left_system() to the door documentation.
These were always available but was left out of the documentation
for some unknown reason..:)
- Added two more variables:
short uart_base - will contain the base address of the port in use.
short irq - will contain the interrupt request in use.
- Corrected a problem with display_file again.. Also rearranged
and optimized some code in the display_file(). You should
see a SUBSTANTIAL improvement in the way display_file works for
speed.
- Increased the strings main_dir[] and gen_dir[] from 15 chars.
to 80 characters.
- Added proto's for Ctrl-K set of functions that were left out
of CKIT.H
- CKIT.H had a variable called current_conference. This should
have been called current_conf. fixed
- If you were using pos_cursor() (ANSI cursor control) and you
were displaying peices of a string on the same line, and
you didn't have any line feeds and you went past line 22
(into the local status bar), Ckit would try and scroll the
screen each time you called pos_cursor() with a row number
greater than 22 even though you were still on the same line.
Fixed.
07-15-91
- Added switch for ansi when using PCB14.5+ pcboard.sys file
to know if the caller wanted ANSI but no color.
- Ckit was not allowing ANSI cursor commands if the door.sys file
had the user set for ANSI with no graphics. (ansi_NG). Fixed.
- Added a new variable short non_ibm. This indicates whether the caller
called using 7 bits instead of 8 bits. Using 7 bits doesn't allow
for IBM graphic characters above 128 to be displayed correctly.
- Fixed a problem in the LARGE memory model where it was not reading
a DORINFOx.DEF file correctly for the graphics preference.
07-08-91 v1.81ß
- Added time_credit, and mins_left_system() to the door documentation.
These were always available but was left out of the documentation
for some unknown reason..:)
07-Jul-91 v1.81ß
- Added two more variables in CKIT.H.
short uart_base - will contain the base address of the port in use.
short irq - will contain the interrupt request in use.
- Optimized some code in the interrupt handlers.
02-Jul-91 v1.81ß
- Corrected a problem with display_file again.. Also rearranged
and optimized some code in the display_file(). You should
see a SUBSTANTIAL improvement in the way display_file works for
speed.
- Increased the strings main_dir[] and gen_dir[] from 15 chars.
to 80 characters.
- Optimized some other code in CKIT.
21-Jun-91 v1.81ß
- Added proto's for Ctrl-K set of functions that were left out
of CKIT.H
- CKIT.H had a variable called current_conference. This should
have been called current_conf. fixed
- If you were using pos_cursor() (ANSI cursor control) and you
were displaying peices of a string on the same line, and
you didn't have any line feeds and you went past line 23
(into the local status bar), Ckit would try and scroll the
screen each time you called pos_cursor() with a row number
greater than 23 even though you were still on the same line.
Fixed.
15-Jun-91 v1.8
- Added support for FOSSIL drivers. Ckit will now
detect if a fossil driver is in use. See the
open_door() in the docs. You will need to add
this to your door doc files.
- Added more capability to inkey(). inkey() will now
watch time left and set DUMP_USER.
- Included some useful information with using close_door()
and C's atexit() function. Door authors need to
read this! and look at the ckitdemo.c usage of it.
- Fixed a potential problem whereas if exit_msg[] was
a NULL, Ckit could get hung up.
05-May-91 v1.76D
- Added chatmode set to TRUE when the sysop drops to DOS
so the door program can know that a screen re-fresh is
needed. See chatmode usage in DOC file for more info.
- Fixed the PORT:XXXX:X cmd, CKIT wasn't picking up the port
base address/irq correctly.
NOTE DOOR AUTHORS:
You should include in your documentation the PORT usage
cmd and compile your door program to accept and pass
this information to open_door(). Pls see docs.
- Fixed display_file() so it would not display the EOF
character.
24-Mar-91 v1.76
- Added support for RBBS-PC and other systems using the DORINFOx.DEF
system files.
- Source code for reading PCBoard data files are available on Data-Comp BBS
and may be linked with your C door program if desired. RBBS and
and others will be as they become available.
15-Feb-91 v1.75C
- Not sure what happend 1.75B but anyway, the C version fixed
a few loose ends.
- Fixed code so that door.sys, wildcat, and generic.sys files are closed
after a call to open_door().
- Changed so that if sysop is logged on, (using pcboard.sys), the
firstname will be set to what is in the pcboard.sys file instead
of "sysop".
- Added a pointer to the internal buffer that pcboard.sys is held and
which will be used to update pcboard.sys when returning to the board.
Added pointer to internal pcboard.sys buffer - BYTE *pcbsysbuf
- Changed logoff_msg[] to exit_msg[]. logoff_msg[] is now displayed if
the user says good-bye within the door. See CKIT.H for the macros
LOGOFF and EXITDOOR. The complete log-off routines and source code
for reading pcboard.dat files are on Data-Comp BBS. These can be
linked with CKIT if you want to add a log-off feature for PCBoard
doors.
24-Nov-90 v1.75
- Fixed a problem in the last release for sysops using the
pcboard.sys file. CKIT would always report "Time adjusted
for upcoming event".
12-Nov-90 v1.75
- Added a function to update user record IF you are writing the
door for use with PCBoard 14.5. The new function name is
update_user().
- Added the ability to turn on and off Control K checking, if
desired. This involves the additon of 3 functions.
CtrlK_ON, CtrlK_OFF, and check_CTRL_K.
- Added chat mode via function key 10. Also a variable
short chatmode is set to TRUE when chat mode has taken
place.
- CKIT will now read a file called GENERIC.SYS. This file
will allow the door to work on ANY BBS system, depending on
the level of information required for door.
- Added some enhancements to the status line for the COM port
status. It will now display the status of CTS, DTR, DSR
and DCD.
- Fixed a problem with ALL the medium models. Also fixed a
problem with the delay() function in the MSC libraries.
There is also a large memory model now available for
registered users.
16-Sep-90 v1.71
Release of version 1.71
This release was intended to be a maintenance release.
There were, however, a few things added and a couple items
repaired.
- Added a function to re-enable keyboard timer after it had been
turned off by a previous call to debug_on(). The new function
name is debug_off().
- Added the ability to define your own error message for the
display_file() function. error_msg11[40]. If you don't
define it, CKIT will use it's default.
- More and more and more documentation updates and examples.
Too many additions to list here. Mostly more examples and
better explanations.
- Fixed the display_file() function so that it will properly
handle files that did not contain line feeds. There will
also be a future release of display_file() that will handle
the ANSI screens better and include PCB color macros.
- Close door was clearing the screen when exiting. It no
longer does this.
- Fixed the More: (Y)es, (N), (NS)non-stop prompt. Somehow
in the last release, the last part of the string was missing
from the source code.
- Also missing in the last release source code was the public
declares for transmit_modem, set_r_c and another function.
Not sure how this happened but it did. Your linker will now
find these.
- The page_length should be accurate now. The bug that was in
PCBoard's 14.5 door.sys has been fixed and I changed CKIT to
give the true page length.
01-Sep-90 v1.6
Release of version 1.7
- Added support for reading scan codes from non-standard keys on
IBM keyboards. (F1-F10, Arrows, PgUp, PgDn, etc).
- Ability to define the logoff message and color
- Ability to change the port address and IRQ if needed.
PORT:AAAA:A where AAAA equal to port base address and A is IRQ
i.e PORT:02F8:3 would be the same as COM2.
- Additonal variables:
short scan_code, short logoff_color, char logoff_msg[40], short key_source
- Additonal functions:
short wait_keypress(void) for "hot_keys"
- open_door()'s prototype has been changed. This allows one to pass
as many parameters as desired (up to the max. of 3), without having
to pass any dummy pointers.
- Fixed a problem in the cmd line where certain command line
parameters (callinfo.bbs and pcboard.sys) passed were case sensitive.
This caused CKIT to read them incorrectly.
- Cleaned up the status line display when certain information was not
available depending on which file was opened. (pcboard, door.sys, callinfo)
- Additional documentation added and improvements.
Once again, see open_door() for some changes and key_source.
The option variable documention has also been updated.
Also see the ckitdemo.c for more examples.
19-Aug-90 v1.6
Release of version 1.6
Added support for WILDCAT! systems. The following additonal
information is available for WILDCAT! users.
Additional WILDCAT! variables:
monitor_type[5], max_sec[5], high_msg[5], door_opened[5],
BYTE name_in_user
Additional variables for general use by any system:
short WILDCAT, protocol[15], security_level[5]
See the CKIT.DOC for explanations and the compatibility chart.
- clr_screen() was not properly handling NON_ANSI callers. fixed
- Under certain circumstances, a parsing routine in CKIT could get
hung up. fixed.
- Reduction of code size by about 5% relative.
- Fixed some documentation errors. In particular, you may want to
reprint the open_door() page and progname variable page.
Also there are new variables listed above in the doc file and
the compatibility chart has been upgraded.
- Look over the NEW CKITDEMO.C and CKITDEMO.H files. The demo
demostrates some use of added features, (zmodem download,
pcb, wildcat! etc).
13-Aug-90 v1.5A
Release of version 1.5A
I can't believe I did this. After telling everyone to make
sure and not have debug_on in the released versions of their
door, I released CKIT with debug on!. As a result, the
keyboard timer and some other things would not work
properly. This release with a code date 8/13/90 will work
properly.
11-Aug-90 v1.5
Release of version 1.5
Ckit is now compatible with PCBoard version 12.0, 14.x-14.5, GAP
BBS, and other BBS systems using the standard door.sys file.
The level of compatiblity is up to the door author and the type
of information needed. There is a lot of information available,
but by keeping this to a minimum, the door author can write his
door to be compatible with all the systems above with no extra
instructions to the user of the door except for the PCBoard
sysop to use either pcboard.sys or door.sys. (Version 12.0
would have to use pcboard.sys and all others use door.sys.)
CKIT will automatically determine which file to read and which
PCBoard version is in use. See the compatiblity section in this
doc file for more information and a Variables Quick-Reference.
- Added more features and cosmetics to the program's status line
for the sysop's use...
F8 - Return user to BBS. This was always there, I just
forgot to document it. :)
F5 - Shell to DOS
ALT-X - Sets the PCBoard's exit to DOS after caller flag
ALT-N - Sets the PCBoard's sysop on next after caller flag
ALT-H - Display Help Screen on sysop status line, and next
ALT-H will show com port status
- Functions added are:
dos_shell(char *) - Allow door author to shell to another program
for execution if desired. See CKIT.DOC
_debug_on(void); - Turns off keyboard timer and other things
while door author is debugging his door.
- Additional variables:
short PCB, PCB12, expert, parity, *conferences, current_conference,
caller_bday[8], main_dir[15], gen_dir[15], sysop_name[15],
sysop_alias[15], page_length, ansi_ng, default_color[2],
last_dir_scan[8], daily_files[4], total_doors[4],
msgs_left[4], max_files[4], upload_Kbytes[10],
download_Kbytes[10], dload_total[5], upload_total[5]
- Added my own math routine so you no longer have to include
MATH.LIB if you are using TC compiler.
- Reduction of code size by about 20% relative.
25-Jul-90 v1.1
Release of version 1.1
This release was a little premature. I went ahead and released
it since it did fix a couple of problems. "*" indicates a new
feature. Pages in CKIT.DOC for display_file(), input(),
purge_buffer(), check_CR(), check_keypress() have been updated/added
and you may want to reprint these.
Display_file() -
a. It will now put a space before the filename when it reports a
problem.
b. The EOF is no longer displayed.
c. display_file() will now correctly display text files that have ANSI
codes embedded in the file.
d. CTRL-K now works on the local keyboard. (The remote keyboard was OK)
* e. display_file() will now return TRUE/FALSE to indicate whether a
problem had occured. You can then check the C global variable
_errno for cause of error.
* f. Fixed problem when user.page_length was equal to 0. See the
CKIT.DOC for hints on how to take advantage of this.
2. display_time() - Would not update the time used until after
two carriage returns were entered. fixed
3. input()
a. Control characters or any non-displayable characters below 1F hex
will not increase the counter. This corrects the problem of being
to backspace too far and erasing the prompts.
* b. Each call to input() now will purge the buffer you wish to place
keyboard input. You should no longer have to include the statement
memset(buffer, 0, 21) before calling input().
* c. A new function purge_buffer will purge any buffer to NULLS by
passing a pointer to the buffer and the size of the buffer.
i.e purge_buffer(buffer, 0x80).
This may or may not be useful but is available.
NOTE: There is a seperate purge function for the serial port input
buffer if you wish to purge it before calling input.
See CKIT.DOC
* d. New function available called check_keypress. Checks for any
specific ASCII character.
This function will return TRUE/FALSE as defined in CKIT.DOC.
* e. Another new function called check_CR will check for a carriage
return and return TRUE/FALSE.
4. get_nextpar() - Would only accept 2 stacked commands, fixed.
While working on the get_nextpar() function, I went ahead and targeted it
for some optimization along with the get_cmdline() function.
The results are:
get_nextpar() is now smaller and 7% faster.
get_cmdline() is now smaller and 45% faster.
Overall, with all the corrections and added functions the .obj file for
CKIT is now 2% SMALLER than before.
25-Jun-90 v1.05
Release of version 1.05
Added support for 16550AN UART. The code will take advantage
of 16550AN chip if present. Added caller log function.
Begin including the medium library with Zip. This was done
because of the self-registering feature. Took out time limit
that CKIT originally had. Future releases will not have any
limitations.
20-Jun-90 v1.0
Release of version 1.0C
Fixed another minor problem where the assembler I used had
converted all my functions to uppercase in the .obj file.
I thought the default was to not do that but as it turns out
it wasn't. Now all the library function names/variables are
the right case.
16-Jun-90 v1.0
Release of version 1.0B
01-Jun-90 v1.0
Release of version 1.0
01-May-90 v1.0
Initial BETA testing as CKIT10ß.ZIP
Beta 1.0 release. The next release of CKIT, I predict, should have
about a 15% to 20% reduction in code size. If you find any problems
with CKIT, please contact me at the phone numbers/address above.